using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;
using objetos;
using dados;
using System.Transactions;
using publico;

namespace negocios
{
	#region TB_PEDIDO_ITEM
	/// <summary>
	/// This object represents the properties and methods of a TB_PEDIDO_ITEM.
	/// </summary>
    public class BLL_TB_PEDIDO_ITEM : System.Web.UI.Page
	{		
		DAL_TB_PEDIDO_ITEM DAL = new DAL_TB_PEDIDO_ITEM();
		
		#region METODOS PROCEDURES


        public DataTable Dt_pedido_item
        {
            get
            {
                if (Session["dt_pedido_item"] == null)
                {
                    Dt_pedido_item = CriarDataTable();
                }
                return (DataTable)Session["dt_pedido_item"];
            }
            set { Session["dt_pedido_item"] = value; }
        }


        public DataTable CriarDataTable()
        {
            return DAL.CriarDataTable();
        }


        public bool ExisteItem(int id_pedido)
        {

            if (DAL.SelecionarLista(string.Format("tb_pedido_item.id_pedido = {0}", id_pedido), "").Count > 0)
            {
                return true;
            }
            else
            {
                return false;
            }

        }


        public bool ExisteItem(int id_pedido, int id_produto_servico)
        {

            if (DAL.SelecionarLista(string.Format("tb_pedido_item.id_pedido = {0} and tb_pedido_item.id_produto_servico = {1}", id_pedido, id_produto_servico), "").Count > 0)
            {
                return true;
            }
            else
            {
                return false;
            }

        }

        public List<int> ListaProdutos(int id_pedido)
        {
            // RETORNO TODOS OS ITEM QUE JA EXISTEM NA TABELA PEDIDO ITEM
            List<OBJ_TB_PEDIDO_ITEM> lista_item = new List<OBJ_TB_PEDIDO_ITEM>();

            lista_item = DAL.SelecionarLista(string.Format("tb_pedido_item.id_orcamento = {0}", id_pedido), "");

            // INCLUIO NA LISTA TODOS OS CODIGOS DOS PRODUTOS EXISTENTES NA TABELA
            List<int> item = new List<int>();
            for (int i = 0; i < lista_item.Count - 1; i++)
            {
                item.Add(lista_item[i].id_produto_servico);
            }
            return item;
        }
            

        public int Incluir(OBJ_TB_PEDIDO_ITEM obj)
        {
            return DAL.Incluir(obj);
        }
	
        public void AtualizaTotalPedido(int id_pedido)
        {
            DAL.AtualizaTotalPedido(id_pedido);
        }
		
		/// <summary>
		/// Alterar via procedure
		/// </summary>
		public void Alterar(OBJ_TB_PEDIDO_ITEM obj)
		{
			DAL.Alterar(obj);	
		}

       
        public void Excluir(OBJ_TB_PEDIDO_ITEM obj)
        {
            DAL.Excluir(obj);
        }
	    
		/// <summary>
		/// Excluir Lista via procedure
		/// </summary>
		public void ExcluirLista(List<OBJ_TB_PEDIDO_ITEM> lista)
		{
				foreach (OBJ_TB_PEDIDO_ITEM obj in lista)
            	{
                this.Excluir(obj);
            	}
			
		}
						
		/// <summary>
		/// Pesquisar Parametros Where, OrderBy, PageIndex, PageSize
		/// </summary>		
		public DataSet Selecionar(string Where, string OrderBy, int PageIndex, int PageSize)
		{
			
			return DAL.Selecionar(Where,OrderBy,PageIndex,PageSize);
			
		}		
		
		
		/// <summary>
		/// Retorna Objeto por ID
		/// </summary>
		public OBJ_TB_PEDIDO_ITEM SelecionarObjetoPorId(int id)
		{
			return DAL.SelecionarObjetoPorId(id);
			
		}
				
			
		/// <summary>
		/// Retorna DataSet Parametros Where, OrderBy
		/// </summary>	
		public DataSet Selecionar(String Where, String OrderBy)
        {
            return DAL.Selecionar(Where, OrderBy);
        }
		
		/// <summary>
		/// Retorna DataSet
		/// </summary>	
		public DataSet Selecionar()
        {
            return DAL.Selecionar();
        }
			
		
		/// <summary>
		/// Retorna uma lista de objetos por parametro Where, OrderBy
		/// </summary>
		public List<OBJ_TB_PEDIDO_ITEM>SelecionarLista(String Where, String OrderBy)
		{						
			return 	DAL.SelecionarLista(Where,OrderBy);
		}
		
		
		/// <summary>
		/// Retorna uma lista de objetos por parametro 
		/// </summary>
		public List<OBJ_TB_PEDIDO_ITEM>SelecionarLista()
		{						
			return 	DAL.SelecionarLista();
		}
		
		public void PreencheControle(System.Web.UI.Control controle, bool selecione)
        {
            if (controle is DropDownList)
            {
                DropDownList ddl = (DropDownList)controle;
                ddl.Items.Clear();
                foreach (OBJ_TB_PEDIDO_ITEM obj in DAL.SelecionarLista())
                {
                    ddl.Items.Add(new ListItem(obj.id_pedido.ToString(), obj.id.ToString()));
                }
                
                if (selecione)
                {
                    ddl.Items.Insert(0, new ListItem("Selecione", ""));
                    ddl.SelectedIndex = 0;
                }

                ddl.DataBind();
            }


            if (controle is ListBox)
            {
                ListBox lst = (ListBox)controle;
                lst.Items.Clear();
                foreach (OBJ_TB_PEDIDO_ITEM obj in DAL.SelecionarLista())
                {
                    lst.Items.Add(new ListItem(obj.id_pedido.ToString(), obj.id.ToString()));
                }

                if (selecione)
                {
                    lst.Items.Insert(0, new ListItem("Selecione", ""));
                    lst.SelectedIndex = 0;
                }

                lst.DataBind();
            }

        }										
			
		
		public DataSet ListaCampos()
		{
			 return DAL.ListaCampos();
		}



        public void SerializeLista(List<OBJ_TB_PEDIDO_ITEM> obj, string arquivo)
        {
            try
            {
                DAL.SerializeLista(obj, arquivo);
            }
            catch (Exception)
            {

                throw;
            }


        }

        public List<OBJ_TB_PEDIDO_ITEM> Deserialize(string arquivo)
        {
            try
            {
                return DAL.DeserializeLista(arquivo);
            }
            catch (Exception)
            {

                throw;
            }
        }


        public void SerializeObjeto(OBJ_TB_PEDIDO_ITEM obj, string arquivo)
        {
            try
            {
                DAL.SerializeObjeto(obj, arquivo);
            }
            catch (Exception)
            {

                throw;
            }


        }

        public OBJ_TB_PEDIDO_ITEM DeserializeObjeto(string arquivo)
        {
            try
            {
                return DAL.DeserializeObjeto(arquivo);
            }
            catch (Exception)
            {

                throw;
            }
        }


        public DataTable PreencheDataTable(DataTable dt, OBJ_TB_PEDIDO_ITEM item)
        {

            return DAL.PreencheDataTable(dt, item);
        }


        /// <summary>
        /// Soma Valor 
        /// </summary>
        /// <param name="tabela"></param>
        /// <returns></returns>
        public Decimal SomaValor(DataTable tabela, string coluna)
        {
            DataTable dt = tabela;

            decimal valor = 0;

            try
            {
                if (dt != null)
                {
                    object resultado = dt.Compute(string.Format("SUM({0})", coluna), "");

                    if (resultado != DBNull.Value)
                    {
                        valor = Convert.ToDecimal(resultado);
                        return valor;
                    }
                    else
                    {
                        return valor;
                    }


                }
                else
                {
                    return valor;
                }

            }
            catch (Exception)
            {

                throw;
            }



        }



        /// <summary>
        /// Soma Valor
        /// </summary>
        /// <param name="tabela"></param>
        /// <returns></returns>
        public Decimal SomaValor(DataTable tabela, string coluna, string param)
        {
            DataTable dt = tabela;

            decimal valor_total = 0;

            try
            {
                if (dt != null)
                {
                    object resultado = dt.Compute(string.Format("SUM({0})", coluna), param);
                    if (resultado != DBNull.Value)
                    {
                        valor_total = Convert.ToDecimal(resultado);
                        return valor_total;
                    }
                    else
                    {
                        return valor_total;
                    }

                }
                else
                {
                    return valor_total;
                }

            }
            catch (Exception)
            {
                
                throw;
            }



        }

		#endregion
	}
	#endregion
}

